Custom Workflow API Example

The following workflow example demonstrates how to add a custom comment workflow to Pyramid. It is a basic setup mimicking what the built-in conversation and annotation tools already do. In the marketplace, there is another example for a "Task" workflow that can be used as a reference.

Note: This feature is available with an Enterprise license only.

Walkthrough Example

Let us start designing our new Workflow. Create a new Workflow by pressing Add Custom Workflow in the Admin Console.

Start by adding the Workflow's Settings. Specify the Workflow's name and description and upload an icon for it.

Create Page

Next is to start building the Workflow's screens. We will start with the Create tab. From the Create panel, the user will create a new Thread from our Workflow's type.

The screen design begins with adding the screen's UI elements. Go to the HTML tab, by default you will see a "container" div, you can use it and code your needed HTML elements inside of it.

In our example, we'll add three inputs with labels, one for "subject", one for "description", and one for the "first comment":

Click Preview Light or Preview Dark to see how it looks:

Next add the logic behind the UI. Go to the "JavaScript" tab. You will see a "Main Function", this function is triggered before the screen is loaded. We will use the Main function to implement our logic and register for necessary events with the help of the API object.

The global API object, 'workflowApi', contains objects, functionality and attributes for building your Workflow. In our example we'll register the "OnFormLoad" event and initialize our HTML elements.

The "OnFormLoad" event triggers after the screen is loaded, so we can integrate it our HTML elements. Here we are using the API object, "workflowApi," to retrieve the thread's data, and set it in the HTML form input elements.

We now register 'onkeyup' event, so we will update the thread and the first entry when the user changes the input's text.

Next we check that our logic is working by clicking 'Preview' again. It should show the text for title and subtitle that we provided in the 'Test JSON' tab.

Next we will set the styles for the screens. Notice that there are two tabs for CSS styles: "CSS Dark" and "CSS Light". Both of those tabs represent CSS styles for the screen. Each CSS style set will be activated for its relevant theme in the system. In our example we will set the same CSS code for both.

We will set the width for the inputs, and a space between the inputs:

Clicking the "Preview Dark" button you can see that the styles are applied to the elements.

Lets next go to the "Settings" tab. Here we can manage the settings of the screen. In our example we going to set the height to be 300px.

View / Edit Page

Now we'll design the "View/Edit" screen. In our example, when the user enters an existing thread they will see old comments and be able to add new ones. But they will not be able to edit the thread details.

Go to the "Edit/View" tab. We are repeat similar steps to the "create" screen. First we'll set HTML elements.

  • The Thread attributes as read only labels: title and description.
  • We'll show old comments that were added.
  • Allow input and a button for adding a new comment.

Next for JavaScript. We will access the main API object and set the data for the input elements. We'll display all of the old comments on the screen and let the user add new comments. Notice that we implemented the "onClick" event for adding a new comment. When the user clicks the button we will set the new comment as a new entry and save the thread.

To test the "View/Edit" page we need to change the "Test JSON" to include some comments. We'll add elements to the "entries" attribute to represent the old comments.

Now when we can "Preview" our code and see that the screen is showing the data that we just added.